package yl.hs.bmipfull.daos.salemanage;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.salemanage.CustomerUserEntity;

import java.util.List;

/*
 * ICustomerUserDao 客户用户数据操作接口
 * @category
 * @author 谢景广
 * @date 2022-04-20
 */
@Repository
public interface ICustomerUserDao extends BaseDao<CustomerUserEntity> {
    /**
     * 删除系统用户
     * @param sn 系统用户编号
     * @return 删除结果
     */
    Integer deleteBySN(@Param("sn")String sn);

    /**
     * 根据联系人编号和客户编号获取客户系统用户信息
     * @param linkerSN 联系人编号
     * @param customSN 客户编号
     * @return 客户系统用户信息
     */
    CustomerUserEntity findByCustSNAndLinkSN(@Param("linkerSN") String linkerSN,@Param("customSN") String customSN);

    /**
     * 根据联系人编号和关联类型获取客户系统用户信息
     * @param linkerSNList 联系人编号集合
     * @param dbMapCode 关联类型
     * @return 客户系统用户信息
     */
    List<CustomerUserEntity> queryByLinerSnAndType(@Param("snList")List<String> linkerSNList,@Param("objType") String dbMapCode);

    /**
     * 根据联系人sn获取信息
     * @param linkerSN 联系人编号
     * @return 信息
     */
    CustomerUserEntity findByLinkSN(@Param("linkerSN") String linkerSN);

    /**
     * 获取用户关联的合同编号
     * @param linkSN 联系人编号
     * @param objType 关联类型（合同数据表名）
     * @return 合同编号集合
     */
    List<String> queryContractSNByLinkSN(@Param("linkerSN")String linkSN, String objType);

    /**
     * 合同关联的用户信息
     * @param objSNList 合同编号集合
     * @param objType 合同表明
     * @return 合同用户集合
     */
    List<CustomerUserEntity> queryContractsUsers(@Param("objSNList")List<String> objSNList,@Param("objType") String objType);
    /**
     * 合同关联的用户信息
     * @param objSN 合同编号集合
     * @param objType 合同表明
     * @return 合同用户集合
     */
    List<CustomerUserEntity> queryContractUsers(@Param("objSN")String objSN,@Param("objType") String objType);
}
